package com.whfc.hdc.service;

import com.whfc.common.exception.BizException;
import com.whfc.hdc.dto.FshDeviceConfigDTO;
import com.whfc.hdc.dto.FshWarnRuleDTO;
import com.whfc.hdc.params.FshDeviceConfigParam;
import com.whfc.hdc.params.FshDeviceInitParam;

import java.util.List;

/**
 * @author qzexing
 * @version 1.0
 * @date 2021-04-07 15:47
 */
public interface FshDeviceConfigService {

    /**
     * 初始化设备配置
     *
     * @param param 参数
     * @throws BizException 业务异常
     */
    void initDeviceConfig(FshDeviceInitParam param) throws BizException;

    /**
     * 获取设备配置
     *
     * @param sn 设备sn
     * @return 设备配置
     * @throws BizException 业务异常
     */
    FshDeviceConfigDTO getDeviceConfig(String sn) throws BizException;

    /**
     * 设置设备配置
     *
     * @param param 配置
     * @throws BizException 业务异常
     */
    void setDeviceConfig(FshDeviceConfigParam param) throws BizException;


    /**
     * 获取推送注册ID列表
     *
     * @param snList 设备SN列表
     * @return 推送注册ID列表
     * @throws BizException 业务异常
     */
    List<String> getRegistrationIdList(List<String> snList) throws BizException;

    /**
     * 保存极光推送注册ID
     *
     * @param deviceId       设备ID
     * @param sn             sn
     * @param registrationId 极光注册ID
     * @throws BizException 业务异常
     */
    void savePushRegistrationId(Integer deviceId, String sn, String registrationId) throws BizException;

    /**
     * 获取所有的安全帽报警类型
     *
     * @return 安全帽报警类型
     * @throws BizException 业务异常
     */
    List<FshWarnRuleDTO> getWarnRuleList() throws BizException;

}
